﻿namespace MicroCloud.Authorization.Dtos
{
    /// <summary>
    /// 实体信息节点
    /// </summary>
    [MapFrom(typeof(EntityInfo))]
    public class EntityInfoNode
    {
        #region "获取或设置 编号"
        /// <summary>
        /// 获取或设置 编号
        /// </summary>
        public long Id { get; set; }
        #endregion
        #region "获取或设置 实体名称"
        /// <summary>
        /// 获取或设置 实体名称
        /// </summary>
        public string Name { get; set; }
        #endregion
        #region "获取或设置 实体类型名称"
        /// <summary>
        /// 获取或设置 实体类型名称
        /// </summary>
        public string TypeName { get; set; }
        #endregion
        #region "获取或设置 数据库架构"
        /// <summary>
        /// 获取或设置 数据库架构
        /// </summary>
        public string DbSchema { get; set; }
        #endregion
        #region "获取或设置 数据库对象名称"
        /// <summary>
        /// 获取或设置 数据库对象名称
        /// </summary>
        public string DbObjName { get; set; }
        #endregion
        #region "获取或设置 数据库对象类型"
        /// <summary>
        /// 获取或设置 数据库对象类型
        /// </summary>
        public DatabaseObjectType DbObjType { get; set; }
        #endregion
        #region "获取或设置 是否启用数据审计"
        /// <summary>
        /// 获取或设置 是否启用数据审计
        /// </summary>
        public bool AuditEnabled { get; set; }
        #endregion
        #region "获取或设置 是否启用数据事件"
        /// <summary>
        /// 获取或设置 是否启用数据事件
        /// </summary>
        public bool EventEnabled { get; set; }
        #endregion

        #region "获取或设置 创建时间 ICreatedTime、ICreationAudited  可装载接口，在数据创建时可自动设置当前时间"
        /// <summary>
        /// 获取或设置 创建时间
        /// </summary>
        public DateTime CreatedTime { get; set; }
        #endregion

        #region "获取或设置 更新时间 IUpdatedTime、IUpdateAudited 可装载接口，在数据更新时可自动设置当前时间"
        /// <summary>
        /// 获取或设置 更新时间
        /// </summary>
        public DateTime? UpdatedTime { get; set; }
        #endregion

        #region "获取或设置 数据版本 IDataVersion 可装载接口，用于乐观并发处理"
        /// <summary>
        /// 获取或设置 数据版本
        /// 在实体提交验证后（增加、修改）会自动设置一个时间戳值持久化至数据库
        /// 修改、移除时取实体数据库值与提交值比对，如不一致则拒绝提交
        /// </summary>
        public long DataVersion { get; set; }
        #endregion

    }
}
